Many of us have seen films containing remarkably realistic dinosaurs, aliens, animated toys and other fanciful creatures. Such animations are made possible by computer graphics. Using such techniques, a computer graphics artist can specify how each object should look and how it should change in appearance over time, and a computer then models the objects and displays them on a display such as your television or a computer screen. The computer takes care of performing the many tasks required to make sure that each part of the displayed image is colored and shaped just right based on the position and orientation of each object in a scene, the direction in which light seems to strike each object, the surface texture of each object, and other factors.
Because computer graphics generation is complex, computer-generated three-dimensional graphics just a few years ago were mostly limited to expensive specialized flight simulators, high-end graphics workstations and supercomputers. The public saw some of the images generated by these computer systems in movies and expensive television advertisements, but most of us couldn't actually interact with the computers doing the graphics generation. All this has changed with the availability of relatively inexpensive 3D graphics platforms such as, for example, the Nintendo 64® and various 3D graphics cards now available for personal computers. It is now possible to interact with exciting 3D animations and simulations on relatively inexpensive computer graphics systems in your home or office.
A problem graphics system designers confronted in the past was to provide a powerful yet inexpensive system which enables various data formats to be stored and processed thereby in a efficient and advantageous manner. Graphics chips used in graphics systems have included a local or on-chip memory for storing data as it is rendered by the graphics pipeline. When data is generated by the graphics chip it is transferred from the local memory to an external memory, where it can be used by, for example, a video interface unit to display the data on a display device. This external memory is typically part of the main memory of the graphics system and is referred to as the external frame buffer (XFB). The processing path of the data between the local memory and the external frame buffer may be referred to as the copy pipeline.
The local memory and the external frame buffer can have a variety of data formats for achieving various functionality in the graphics system. One problem that graphics system designers have faced in the past is to determine what format(s) of data to support in the local memory and the external frame buffer to enable advantageous and efficient use thereof by applications running on the system. Various solutions to this problem were offered. For example, graphics systems have used a variety of data formats in an attempt to improve or maximize the overall operation of the system. While some work has been done in the past in connection with such memories and data formats, further improvements are desirable. Specifically, further improvements are desired for high performance, low cost graphics systems, such as home video game systems.
The present invention addresses this problem by providing techniques and arrangements for use in connection with an embedded frame buffers in graphics systems. The invention provides a combination of pixel formats for an embedded frame buffer that is particularly advantageous when used in systems designed for playing interactive 3D video games. The invention enables the embedded frame buffer to be reconfigured to and efficiently used in a variety of modes, including an anti-aliasing mode, a deflicker mode and a YUV (i.e. luma/chroma) mode, thereby increasing the flexibility of the system to support a variety of applications. The desired pixel format for each mode can be selected using, for example, a command to the graphics hardware on which the embedded frame buffer is provided.
In accordance with the invention, the copy pipeline is advantageously used to further process the data from the embedded frame buffer prior to storing the data in the external frame buffer. For example, the copy pipeline can be used to convert the data between a variety of useful formats to, for example, reduce the amount of memory needed to store the data, and/or provide the data in desired format for use in further processing by the graphics system. The copy pipeline can also be used to further process the frame data in a manner that improves the display quality and/or modifies the display characteristics.
In accordance with one aspect provided by the invention, the graphics processor includes pixel processing circuitry for producing pixel data, and an embedded frame buffer which receives pixel data, wherein the embedded frame buffer is selectively configurable to store the received pixel data in any of the following formats:                RGB color and depth (Z);        super-sampled RGB color and depth (Z); and        YUV (luma/chroma).        
In accordance with a preferred embodiment of the invention, the RGB color and depth is a 48-bit format which includes 24 color bits and 24 depth (Z) bits. The embedded frame buffer is further configurable such that the 24 color bits selectively include either 8 bits for red, 8 bits for blue and 8 bits for green (RGB8) or 6 bits for red, 6 bits for green, 6 bits for blue and 6 bits for alpha (RGBA6). Preferably, super-sampled RGB color and depth is a 96-bit format which includes 16 bit color and 16 bit depth data for three super-sample locations for each pixel. The 16 bit super-sample color data preferably includes 5 bits for red, 6 bits for green and 5 bits for blue (R5G6B5). The YUV format is preferably a YUV 4:2:0 format. The embedded frame buffer (EFB) may be a dynamic random access memory (DRAM). In one embodiment of the invention the EFB is a 1T SRAM, such as provided by Moses, which is a DRAM that acts as an SRAM.
In accordance with another aspect of the invention, a method of using an embedded frame buffer in a graphics system is provided. The method includes providing an embedded frame buffer that is selectively configurable to store point sampled pixel data including color and Z, super-sampled pixel data including color and Z, and YUV format data, and providing an interface, such one or more API commands, to the graphics system which enables the particular configuration of the embedded frame buffer to be established by a programmer on a frame-by-frame basis.